home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 March / EnigmA AMIGA RUN 05 (1996)(G.R. Edizioni)(IT)[!][issue 1996-03][Skylink CD IV].iso / earcd / editor / pt14l.lha / PasTeX_1.4 / rexx / golded / autodoc.rexx next >
OS/2 REXX Batch file  |  1994-03-28  |  3KB  |  115 lines

  1. /*
  2.     $VER: AutoDoc.rexx  V0.98 (8.3.94) © Axel Burghardt
  3.  
  4.     Dieses ARexx-Skript extrahiert aus <Dateiname> die AutoDoc-Einträge.
  5.     Diese können über '>' in eine Datei umgeleitet werden.
  6.  
  7.     Im Modus 'AUTODOC' arbeitet das Skript wie AutoDoc V1.0 (siehe NDUK-Paket)
  8.     in den Optionen -C -I. Die Zeilen werden nach dem 77.Zeichen umgebrochen!
  9.  
  10.     Wird Modus nicht angegeben, werden die AutoDoc-Einträge in ihrem Kontext
  11.     (Quelltetx) belassen. So lassen sich (dokumentierte) C-Quelltexte in die
  12.     Hypertext-Struktur pressen und mittels AmigaGuide/Multiview betrachten.
  13. */
  14.  
  15. PARSE ARG File Mode .
  16.  
  17. Format  = "AutoDoc <Dateiname> [AUTODOC]"
  18. TRUE    = 1
  19. FALSE   = 0
  20. Module  = FALSE
  21. CR      = '0a'x                                /* Wagenrücklauf     */
  22. LF      = '0c'x                                /* Zeilenvorschub    */
  23. Toc     = "TABLE OF CONTENTS" || CR            /* Table Of Contents */
  24. Doc     = "T:Autodoc.doc"
  25. Table   = "T:Autodoc.table"
  26.  
  27. /* ------------------ Support-Bibliothek öffnen ------------------- */
  28.  
  29. IF ~show('L','rexxsupport.library') THEN
  30.   IF ~addlib('rexxsupport.library',0,-30,0) THEN DO
  31.     say "Kann 'rexxsupport.library' nicht öffnen!"
  32.     EXIT 20
  33.   END
  34.  
  35. /* ----------------------- Datei vorhanden? ----------------------- */
  36.  
  37. IF File = '' | ~exists(File) THEN DO
  38.   say "Datei" upper(File) "nicht gefunden!"
  39.   EXIT 20
  40. END
  41.  
  42. /* ------------------------ Welcher Modus? ------------------------ */
  43.  
  44. IF Mode ~= '' & Mode ~='AUTODOC' THEN DO
  45.   say Format
  46.   EXIT 20
  47. END
  48.  
  49. /* -------------------------- Hauptteil --------------------------- */
  50.  
  51. IF open(Input,File,'R') THEN DO
  52.   IF ~open('OutDoc',Doc,'W') | ~open('OutTable',Table,'W') THEN
  53.     EXIT 20
  54.  
  55.   DO WHILE ~eof(Input)
  56.     Line = readln(Input)
  57.     IF Module = FALSE THEN DO
  58.       PARSE VAR Line First '/****** ' Head Last
  59.       IF First = '' & Head ~= '' THEN DO
  60.         Spaces = 77 - 2 * length(Head)
  61.         IF Mode = 'AUTODOC'THEN DO
  62.           Module = TRUE
  63.           Header = Head || copies(' ',Spaces) || Head
  64.         END
  65.         ELSE
  66.           Header = LF || Head || copies(' ',Spaces) || Head || CR || Line
  67.         writeln('OutTable',Head)
  68.         writeln('OutDoc',Header)
  69.       END
  70.       ELSE
  71.         IF Mode ~= 'AUTODOC' THEN writeln('OutDoc',Line)
  72.     END
  73.     ELSE DO    /* Modul = TRUE */
  74.       PARSE VAR Line First '***' Last
  75.       IF First = '' & Last ~= '' THEN DO
  76.         Module = FALSE
  77.         writeln('OutDoc',LF)
  78.       END
  79.       ELSE DO
  80.         IF left(Line,1) = "*" THEN Line = delstr(Line,1,1)
  81.         IF length(Line) > 77 THEN  Line = insert(CR,Line,77)
  82.         writeln('OutDoc',Line)
  83.       END
  84.     END
  85.   END /* while */
  86.   close('OutDoc')
  87.   close('OutTable')
  88.  
  89. /* -------------------- Dateien zusammenbauen --------------------- */
  90.  
  91.   parse value statef(Table) with Type Size .
  92.  
  93.   IF Size > 0 THEN DO
  94.     address command 'sort' Table Table'.sorted'   /* <Table>.sorted */
  95.     open('OutTable',Table||'.sorted')
  96.     say "TABLE OF CONTENTS"
  97.     say
  98.     DO WHILE ~eof('OutTable')
  99.       say readln('OutTable')
  100.     END
  101.     say LF
  102.     close('OutTable')
  103.     open('OutDoc',Doc,'R')
  104.     DO while ~eof('OutDoc')
  105.       say readln('OutDoc')
  106.     END
  107.     delete(Table'.sorted')
  108.   END
  109.   delete(Doc)
  110.   delete(Table)
  111.   EXIT 0
  112. END
  113. ELSE
  114.   EXIT 20
  115.